////
//// Source code recreated from a .class file by IntelliJ IDEA
//// (powered by FernFlower decompiler)
////
//
//package com.it.you.utils;
//
//import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
//import com.fasterxml.jackson.annotation.PropertyAccessor;
//import com.fasterxml.jackson.core.JsonGenerator;
//import com.fasterxml.jackson.core.JsonProcessingException;
//import com.fasterxml.jackson.databind.*;
//import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
//import com.fasterxml.jackson.databind.module.SimpleModule;
//import com.fasterxml.jackson.databind.node.ArrayNode;
//import com.fasterxml.jackson.databind.node.ObjectNode;
//import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
//import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
//import com.fasterxml.jackson.datatype.joda.JodaModule;
//import com.google.common.base.Joiner;
//import com.google.common.base.Strings;
//import com.google.common.collect.Lists;
//import com.google.common.collect.Maps;
//import org.apache.commons.io.IOUtils;
//import org.apache.commons.lang3.StringUtils;
//import org.apache.commons.lang3.math.NumberUtils;
//import org.apache.commons.lang3.time.DateFormatUtils;
//import org.apache.commons.lang3.time.DateUtils;
//import org.joda.time.DateTime;
//import org.springframework.core.io.DefaultResourceLoader;
//import org.springframework.core.io.Resource;
//import org.springframework.core.io.ResourceLoader;
//
//import java.io.*;
//import java.lang.reflect.Field;
//import java.math.BigDecimal;
//import java.math.RoundingMode;
//import java.net.InetAddress;
//import java.net.UnknownHostException;
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.*;
//import java.util.function.BiConsumer;
//import java.util.function.Function;
//import java.util.function.Predicate;
//import java.util.stream.Collectors;
//
//public class YvanUtil {
//    public static final String yyyy_MM_dd = "yyyy-MM-dd";
//    public static final String yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
//    public static final String yyyy_MM_dd_HH_mm = "yyyy-MM-dd HH:mm";
//    private static String[] parsePatterns = new String[]{"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyyMMdd", "yyyyMMdd HH:mm:ss", "yyyyMMdd HH:mm", "yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"};
//    public static final ObjectMapper objectMapper;
//    public static final ObjectMapper objectYamlMapper;
//    public static final ObjectMapper objectMapperWithType;
//    private static ResourceLoader loader = new DefaultResourceLoader();
//    private static Random random = new Random();
//    private static final char[] DIG_ARRAY;
//    private static final char SEPARATE = '/';
//
//    public YvanUtil() {
//    }
//
//    public static String getHostIp() {
//        return getHostIp(getInetAddress());
//    }
//
//    public static String getHostName() {
//        return getHostName(getInetAddress());
//    }
//
//    public static String getHostIp(InetAddress netAddress) {
//        return null == netAddress ? null : netAddress.getHostAddress();
//    }
//
//    public static String getHostName(InetAddress netAddress) {
//        return null == netAddress ? null : netAddress.getHostName();
//    }
//
//    public static InetAddress getInetAddress() {
//        try {
//            return InetAddress.getLocalHost();
//        } catch (UnknownHostException var1) {
//            return null;
//        }
//    }
//
//    public static char getShortDig(int num) {
//        return DIG_ARRAY[num];
//    }
//
//    public static String mysqlLike(String likeContent) {
//        if (Strings.isNullOrEmpty(likeContent)) {
//            return "";
//        } else {
//            String var10000 = likeContent.trim().replace("'", "\\'").replace("/", "//").replace("_", "/_");
//            return "'%" + var10000.replace("%", "/%") + "%' escape '/'";
//        }
//    }
//
//    public static String rootDomain(String hostName) {
//        hostName = hostName.toLowerCase();
//        int portPos = hostName.indexOf(58);
//        if (portPos > 0) {
//            hostName = hostName.substring(0, portPos);
//        }
//
//        if (isDomain(hostName)) {
//            int pos = hostName.lastIndexOf(46);
//            if (pos < 0) {
//                return hostName;
//            } else {
//                int pos2 = hostName.lastIndexOf(46, pos - 1);
//                return pos2 < 0 ? hostName : hostName.substring(pos2 + 1);
//            }
//        } else {
//            return hostName;
//        }
//    }
//
//    public static boolean isDomain(String host) {
//        String hostName = host.toLowerCase();
//        return hostName.endsWith(".com") || hostName.endsWith(".net") || hostName.endsWith(".org") || hostName.endsWith(".cn") || hostName.endsWith(".gov") || hostName.endsWith(".edu") || hostName.endsWith(".me");
//    }
//
//    public static JsonWapper readYaml(File file) {
//        JsonNode jsonNode = null;
//
//        try {
//            jsonNode = objectYamlMapper.readTree(file);
//        } catch (IOException var4) {
//            throw new RuntimeException(var4);
//        }
//
//        if (jsonNode == null) {
//            return new JsonWapper();
//        } else {
//            try {
//                return new JsonWapper(objectMapper.writeValueAsString(jsonNode));
//            } catch (Exception var3) {
//                throw new RuntimeException(var3);
//            }
//        }
//    }
//
//    public static JsonWapper readYaml(String content) {
//        JsonNode jsonNode = null;
//
//        try {
//            jsonNode = objectYamlMapper.readTree(content);
//        } catch (IOException var4) {
//            throw new RuntimeException(var4);
//        }
//
//        if (jsonNode == null) {
//            return new JsonWapper();
//        } else {
//            try {
//                return new JsonWapper(objectMapper.writeValueAsString(jsonNode));
//            } catch (Exception var3) {
//                throw new RuntimeException(var3);
//            }
//        }
//    }
//
//    public static JsonWapper readYamlWapper(Collection<String> locations) {
//        JsonNode jsonNode = null;
//        Iterator var2 = locations.iterator();
//
//        while(var2.hasNext()) {
//            String location = (String)var2.next();
//            Resource resource = loader.getResource(location);
//            InputStream is = null;
//
//            try {
//                is = resource.getInputStream();
//                if (jsonNode == null) {
//                    jsonNode = objectYamlMapper.readTree(is);
//                } else {
//                    merge(jsonNode, objectYamlMapper.readTree(is));
//                }
//            } catch (Exception var12) {
//                throw new RuntimeException(var12);
//            } finally {
//                IOUtils.closeQuietly(is);
//            }
//        }
//
//        if (jsonNode == null) {
//            return new JsonWapper();
//        } else {
//            try {
//                return new JsonWapper(objectMapper.writeValueAsString(jsonNode));
//            } catch (Exception var11) {
//                throw new RuntimeException(var11);
//            }
//        }
//    }
//
//    public static JsonNode merge(JsonNode mainNode, JsonNode updateNode) {
//        Iterator fieldNames = updateNode.fieldNames();
//
//        while(true) {
//            while(fieldNames.hasNext()) {
//                String fieldName = (String)fieldNames.next();
//                JsonNode mainJsonNode = mainNode.get(fieldName);
//                JsonNode updateJsonNode = updateNode.get(fieldName);
//                if (mainJsonNode != null && mainJsonNode.isObject()) {
//                    merge(mainJsonNode, updateNode.get(fieldName));
//                } else if (mainJsonNode != null && mainJsonNode.isArray()) {
//                    if (updateJsonNode != null) {
//                        ArrayNode arrayNode = (ArrayNode)mainJsonNode;
//                        if (updateJsonNode.isArray()) {
//                            arrayNode.addAll((ArrayNode)updateJsonNode);
//                        } else {
//                            arrayNode.add(updateJsonNode);
//                        }
//                    }
//                } else if (mainNode instanceof ObjectNode) {
//                    JsonNode value = updateNode.get(fieldName);
//                    ((ObjectNode)mainNode).set(fieldName, value);
//                }
//            }
//
//            return mainNode;
//        }
//    }
//
//    public static JsonWapper merge(String mainNode, String updateNode) {
//        try {
//            return new JsonWapper(objectMapper.writeValueAsString(merge(objectMapper.readTree(mainNode), objectMapper.readTree(updateNode))));
//        } catch (IOException var3) {
//            throw new RuntimeException(var3);
//        }
//    }
//
//    public static JsonWapper readYamlWapper(String location) {
//        Resource resource = loader.getResource(location);
//        InputStream is = null;
//
//        JsonWapper var3;
//        try {
//            is = resource.getInputStream();
//            var3 = new JsonWapper((Map)objectYamlMapper.readValue(is, LinkedHashMap.class));
//        } catch (Exception var7) {
//            throw new RuntimeException(var7);
//        } finally {
//            IOUtils.closeQuietly(is);
//        }
//
//        return var3;
//    }
//
//    public static JsonWapper readJsonWapper(String location) {
//        return readJsonWapper(loader.getResource(location));
//    }
//
//    public static JsonWapper readJsonWapper(Resource resource) {
//        if (resource != null && resource.exists() && resource.isReadable()) {
//            InputStream is = null;
//
//            JsonWapper var2;
//            try {
//                is = resource.getInputStream();
//                var2 = new JsonWapper(is);
//            } catch (Exception var6) {
//                throw new RuntimeException(var6);
//            } finally {
//                IOUtils.closeQuietly(is);
//            }
//
//            return var2;
//        } else {
//            throw new RuntimeException("resource can't found!");
//        }
//    }
//
//    public static String joinCollection(Iterable<?> iterable, String spt, String emptyString) {
//        StringBuilder sb = new StringBuilder();
//        String sp = "";
//
//        for(Iterator iter = iterable.iterator(); iter.hasNext(); sp = spt) {
//            Object o = iter.next();
//            sb.append(sp).append(Conv.asString(o));
//        }
//
//        return sb.length() <= 0 ? emptyString : sb.toString();
//    }
//
//    public static String joinCollection(Iterable<?> iterable, String spt) {
//        return joinCollection(iterable, spt, "");
//    }
//
//    public static <T> T mapToEntities(Object listMap, Class<T> clazz) {
//        try {
//            String jsonString = objectMapper.writeValueAsString(listMap);
//            return objectMapper.readValue(jsonString, clazz);
//        } catch (Exception var3) {
//            throw new RuntimeException(var3);
//        }
//    }
//
//    public static Map<?, ?> entityToMap(Object obj) {
//        return jsonToMap(toJson(obj));
//    }
//
//    public static <T> T jsonToObj(String jsonStr, Class<T> clazz) {
//        try {
//            return clazz.equals(String.class) ? jsonStr : objectMapper.readValue(jsonStr, clazz);
//        } catch (Exception var3) {
//            throw new RuntimeException(var3);
//        }
//    }
//
//    public static <T> T jsonToObjWithType(String jsonStr, Class<T> clazz) {
//        try {
//            return clazz.equals(String.class) ? jsonStr : objectMapperWithType.readValue(jsonStr, clazz);
//        } catch (Exception var3) {
//            throw new RuntimeException(var3);
//        }
//    }
//
//    public static void saveToFile(String filePath, String content) {
//        BufferedWriter bufferedWriter = null;
//        OutputStreamWriter outputStreamWriter = null;
//        FileOutputStream fileOutputStream = null;
//
//        try {
//            File file = new File(filePath);
//            fileOutputStream = new FileOutputStream(file);
//            outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");
//            bufferedWriter = new BufferedWriter(outputStreamWriter);
//            bufferedWriter.write(content);
//            bufferedWriter.flush();
//        } catch (Exception var9) {
//            throw new RuntimeException(var9);
//        } finally {
//            IOUtils.closeQuietly(bufferedWriter);
//            IOUtils.closeQuietly(outputStreamWriter);
//            IOUtils.closeQuietly(fileOutputStream);
//        }
//
//    }
//
//    public static List<?> jsonToList(String jsonInput) {
//        try {
//            return (List)objectMapper.readValue(jsonInput, List.class);
//        } catch (Exception var2) {
//            throw new RuntimeException(var2);
//        }
//    }
//
//    public static Map<?, ?> jsonToMap(String jsonInput) {
//        try {
//            return (Map)objectMapper.readValue(jsonInput, Map.class);
//        } catch (Exception var2) {
//            throw new RuntimeException(var2);
//        }
//    }
//
//    public static String toJson(Object obj) {
//        if (obj == null) {
//            return null;
//        } else {
//            try {
//                return objectMapper.writeValueAsString(obj);
//            } catch (Exception var2) {
//                throw new RuntimeException(var2);
//            }
//        }
//    }
//
//    public static String getDateString(long dateTime) {
//        return DateFormatUtils.format(new Date(dateTime), "yyyy-MM-dd HH:mm:ss");
//    }
//
//    public static String getDateString(Date date) {
//        return formatToString(date, "yyyy-MM-dd HH:mm:ss");
//    }
//
//    public static String getShortDateString(Date date) {
//        return formatToString(date, "yyyy-MM-dd");
//    }
//
//    public static String getDateString(DateTime date) {
//        return getDateString(date.toDate());
//    }
//
//    public static Date parseDate(Object str) {
//        if (str == null) {
//            return null;
//        } else {
//            long time;
//            if (!(str instanceof Long) && !(str instanceof Integer)) {
//                if (String.valueOf(str).length() != 8 && NumberUtils.isDigits(String.valueOf(str))) {
//                    time = NumberUtils.toLong(String.valueOf(str), -1L);
//                    if (time != -1L) {
//                        return new Date(time);
//                    }
//                }
//
//                try {
//                    return DateUtils.parseDate(String.valueOf(str), parsePatterns);
//                } catch (ParseException var3) {
//                    return null;
//                }
//            } else {
//                time = (Long)str;
//                return new Date(time);
//            }
//        }
//    }
//
//    public static String connectPath(String... paths) {
//        StringBuilder sb = new StringBuilder(64);
//        if (paths != null) {
//            String[] var2 = paths;
//            int var3 = paths.length;
//
//            for(int var4 = 0; var4 < var3; ++var4) {
//                String s = var2[var4];
//                String path = StringUtils.trim(s);
//                if (!StringUtils.isBlank(path)) {
//                    if (sb.length() <= 0) {
//                        sb.append(path);
//                    } else {
//                        boolean before = Objects.equals(sb.charAt(sb.length() - 1), '/');
//                        boolean after = Objects.equals(path.charAt(0), '/');
//                        if (!Objects.equals(before, after)) {
//                            sb.append(path);
//                        } else if (before && after) {
//                            sb.append(path.substring(1));
//                        } else {
//                            sb.append('/').append(path);
//                        }
//                    }
//                }
//            }
//        }
//
//        return sb.toString();
//    }
//
//    public static String toJsonWithType(Object obj) {
//        if (obj == null) {
//            return null;
//        } else {
//            try {
//                return objectMapperWithType.writeValueAsString(obj);
//            } catch (Exception var2) {
//                throw new RuntimeException(var2);
//            }
//        }
//    }
//
//    public static String toYaml(Object obj) {
//        try {
//            return objectYamlMapper.writeValueAsString(obj);
//        } catch (Exception var2) {
//            throw new RuntimeException(var2);
//        }
//    }
//
//    public static String toJsonPretty(Object obj) {
//        try {
//            return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
//        } catch (Exception var2) {
//            throw new RuntimeException(var2);
//        }
//    }
//
//    public static String readFile(File file) throws IOException {
//        FileInputStream fis = null;
//
//        String var2;
//        try {
//            fis = new FileInputStream(file);
//            var2 = Joiner.on("\r\n").join(IOUtils.readLines(fis, "UTF-8"));
//        } finally {
//            IOUtils.closeQuietly(fis);
//        }
//
//        return var2;
//    }
//
//    private static String digits(long val, int digits) {
//        long hi = 1L << digits * 4;
//        return Numbers.toString(hi | val & hi - 1L, Numbers.MAX_RADIX).substring(1);
//    }
//
//    public static String createUUID() {
//        UUID uuid = UUID.randomUUID();
//        StringBuilder sb = new StringBuilder();
//        sb.append(digits(uuid.getMostSignificantBits() >> 32, 8));
//        sb.append(digits(uuid.getMostSignificantBits() >> 16, 4));
//        sb.append(digits(uuid.getMostSignificantBits(), 4));
//        sb.append(digits(uuid.getLeastSignificantBits() >> 48, 4));
//        sb.append(digits(uuid.getLeastSignificantBits(), 12));
//        return sb.toString();
//    }
//
//    public static void main(String[] args) {
//        for(int i = 0; i < 20; ++i) {
//            System.out.println(createUUID());
//        }
//
//    }
//
//    public static int getRandomNotContain(int intVal) {
//        return random.nextInt(intVal);
//    }
//
//    public static int getRandom(int intVal) {
//        return random.nextInt(intVal + 1);
//    }
//
//    public static int getRandom(int val1, int val2) {
//        if (Integer.compare(val1, val2) == 0) {
//            return val1;
//        } else {
//            int min;
//            int max;
//            if (val1 > val2) {
//                max = val1;
//                min = val2;
//            } else {
//                max = val2;
//                min = val1;
//            }
//
//            return min + random.nextInt(max - min + 1);
//        }
//    }
//
//    public static byte[] toJsonByte(Object object) {
//        try {
//            return objectMapper.writeValueAsBytes(object);
//        } catch (JsonProcessingException var2) {
//            throw new RuntimeException(var2);
//        }
//    }
//
//    public static <T> List<T> filter(Collection<T> collection, Predicate<? super T> predicate) {
//        if (collection != null && collection.size() > 0) {
//            List<T> r = Lists.newArrayList();
//            Iterator var3 = collection.iterator();
//
//            while(var3.hasNext()) {
//                T item = var3.next();
//                if (predicate.test(item)) {
//                    r.add(item);
//                }
//            }
//
//            return r;
//        } else {
//            return Lists.newArrayList();
//        }
//    }
//
//    public static <T> T find(Collection<T> collection, Predicate<? super T> predicate) {
//        if (collection != null && collection.size() > 0) {
//            Iterator var2 = collection.iterator();
//
//            Object item;
//            do {
//                if (!var2.hasNext()) {
//                    return null;
//                }
//
//                item = var2.next();
//            } while(!predicate.test(item));
//
//            return item;
//        } else {
//            return null;
//        }
//    }
//
//    public static <T> T find(T[] array, Predicate<? super T> predicate) {
//        if (array != null && array.length > 0) {
//            Object[] var2 = array;
//            int var3 = array.length;
//
//            for(int var4 = 0; var4 < var3; ++var4) {
//                T item = var2[var4];
//                if (predicate.test(item)) {
//                    return item;
//                }
//            }
//
//            return null;
//        } else {
//            return null;
//        }
//    }
//
//    public static <R, T> Map<R, T> toMap(Collection<T> collection, Function<T, R> function) {
//        Map<R, T> map = Maps.newLinkedHashMap();
//        if (collection != null && collection.size() > 0) {
//            Iterator var3 = collection.iterator();
//
//            while(var3.hasNext()) {
//                T item = var3.next();
//                R r = function.apply(item);
//                map.put(r, item);
//            }
//
//            return map;
//        } else {
//            return map;
//        }
//    }
//
//    public static <R, T> Map<R, List<T>> toMapArray(Collection<T> collection, Function<T, R> function) {
//        Map<R, List<T>> map = Maps.newLinkedHashMap();
//        if (collection == null) {
//            return map;
//        } else {
//            collection.forEach((item) -> {
//                R key = function.apply(item);
//                List<T> valueList = (List)map.get(key);
//                if (valueList == null) {
//                    valueList = Lists.newArrayList();
//                    map.put(key, valueList);
//                }
//
//                ((List)valueList).add(item);
//            });
//            return map;
//        }
//    }
//
//    public static <R, T> List<R> map(Collection<T> collection, Function<T, R> function) {
//        List<R> r = Lists.newArrayList();
//        if (collection != null && collection.size() > 0) {
//            Iterator var3 = collection.iterator();
//
//            while(var3.hasNext()) {
//                T item = var3.next();
//                r.add(function.apply(item));
//            }
//
//            return r;
//        } else {
//            return r;
//        }
//    }
//
//    public static <R, T> List<R> map(T[] collection, Function<T, R> function) {
//        List<R> r = Lists.newArrayList();
//        if (collection != null && collection.length > 0) {
//            Object[] var3 = collection;
//            int var4 = collection.length;
//
//            for(int var5 = 0; var5 < var4; ++var5) {
//                T item = var3[var5];
//                r.add(function.apply(item));
//            }
//
//            return r;
//        } else {
//            return r;
//        }
//    }
//
//    static void mainTest(String[] args) {
//        List<YvanUtil.Vo> vos = (List)Lists.newArrayList(new Integer[]{88, 150, 0, 216, 84}).stream().map((n) -> {
//            YvanUtil.Vo r = new YvanUtil.Vo();
//            r.setPrice(new BigDecimal(n));
//            return r;
//        }).collect(Collectors.toList());
//        System.out.println(vos);
//        System.out.println("======== flatScale =========");
//        flatScale(vos, YvanUtil.Vo::getPrice, YvanUtil.Vo::setScale, 5);
//        System.out.println(vos);
//        System.out.println("= SUM =");
//        System.out.println(sum(vos, YvanUtil.Vo::getScale));
//        System.out.println("======== flatScaleValue =========");
//        flatScaleValue(new BigDecimal(12), vos, YvanUtil.Vo::getPrice, YvanUtil.Vo::setRebate, 5);
//        System.out.println(vos);
//        System.out.println("= SUM =");
//        System.out.println(sum(vos, YvanUtil.Vo::getRebate));
//    }
//
//    public static <T> BigDecimal sum(Collection<T> lists, Function<T, BigDecimal> getMethod) {
//        BigDecimal total = BigDecimal.ZERO;
//
//        BigDecimal v;
//        for(Iterator var3 = lists.iterator(); var3.hasNext(); total = total.add(v)) {
//            T item = var3.next();
//            v = (BigDecimal)getMethod.apply(item);
//        }
//
//        return total;
//    }
//
//    public static <T> BigDecimal flatScaleValueWithDesc(ComputDesc targetValue, Collection<T> lists, Function<T, ComputDesc> getMethod, BiConsumer<T, ComputDesc> setMethod, int scale) {
//        BigDecimal total = BigDecimal.ZERO;
//        List<ComputDesc> numberList = Lists.newArrayList();
//        StringBuilder descSum = new StringBuilder("(");
//        StringBuilder exprSum = new StringBuilder("(");
//        String join = "";
//
//        for(Iterator var10 = lists.iterator(); var10.hasNext(); join = "+") {
//            T item = var10.next();
//            ComputDesc v = (ComputDesc)getMethod.apply(item);
//            total = total.add(v.getInputValue());
//            descSum.append(join).append(String.format("${%s:%f}", v.getCaption(), v.getInputValue()));
//            exprSum.append(join).append(String.format("%f", v.getInputValue()));
//            numberList.add(v);
//        }
//
//        descSum.append(")");
//        exprSum.append(")");
//        int i = -1;
//        Iterator<T> iterator = lists.iterator();
//        BigDecimal remain = targetValue.getInputValue();
//        StringBuilder descRemain = new StringBuilder(String.format("${%s:%f}", targetValue.getCaption(), targetValue.getInputValue()));
//        StringBuilder exprRemain = new StringBuilder(String.format("%f", targetValue.getInputValue()));
//
//        while(iterator.hasNext()) {
//            ++i;
//            T item = iterator.next();
//            ComputDesc desc = (ComputDesc)numberList.get(i);
//            if (iterator.hasNext()) {
//                desc.setResult(desc.getInputValue().multiply(targetValue.getInputValue()).divide(total, scale, RoundingMode.DOWN));
//                desc.setDesc(String.format("${%s:%f}*${%s:%f}/%s", targetValue.getCaption(), targetValue.getInputValue(), desc.getCaption(), desc.getInputValue(), descSum.toString()));
//                desc.setExpress(String.format("%f*%f/%s", targetValue.getInputValue(), desc.getInputValue(), exprSum.toString()));
//                setMethod.accept(item, desc);
//                remain = remain.subtract(desc.getResult());
//                descRemain.append(String.format("-${[%s]结果:%f}", desc.getCaption(), desc.getResult()));
//                exprRemain.append(String.format("-%f", desc.getResult()));
//            } else {
//                desc.setResult(remain);
//                desc.setDesc(descRemain.toString());
//                desc.setExpress(exprRemain.toString());
//                setMethod.accept(item, desc);
//            }
//        }
//
//        return total;
//    }
//
//    public static <T> BigDecimal flatScaleValue(BigDecimal targetValue, Collection<T> lists, Function<T, BigDecimal> getMethod, BiConsumer<T, BigDecimal> setMethod, int scale) {
//        BigDecimal total = BigDecimal.ZERO;
//        List<BigDecimal> numberList = Lists.newArrayList();
//        Iterator var7 = lists.iterator();
//
//        BigDecimal remain;
//        while(var7.hasNext()) {
//            T item = var7.next();
//            remain = (BigDecimal)getMethod.apply(item);
//            total = total.add(remain);
//            numberList.add(remain);
//        }
//
//        int i = -1;
//        Iterator<T> iterator = lists.iterator();
//        remain = targetValue;
//
//        while(iterator.hasNext()) {
//            ++i;
//            T item = iterator.next();
//            if (iterator.hasNext()) {
//                BigDecimal v = ((BigDecimal)numberList.get(i)).multiply(targetValue).divide(total, scale, RoundingMode.DOWN);
//                setMethod.accept(item, v);
//                remain = remain.subtract(v);
//            } else {
//                setMethod.accept(item, remain);
//            }
//        }
//
//        return total;
//    }
//
//    public static <T> BigDecimal flatScale(Collection<T> lists, Function<T, BigDecimal> getMethod, BiConsumer<T, BigDecimal> setMethod, int scale) {
//        BigDecimal total = BigDecimal.ZERO;
//        List<BigDecimal> numberList = Lists.newArrayList();
//        Iterator var6 = lists.iterator();
//
//        BigDecimal remain;
//        while(var6.hasNext()) {
//            T item = var6.next();
//            remain = (BigDecimal)getMethod.apply(item);
//            total = total.add(remain);
//            numberList.add(remain);
//        }
//
//        int i = -1;
//        Iterator<T> iterator = lists.iterator();
//
//        BigDecimal v;
//        for(remain = BigDecimal.ONE; iterator.hasNext(); remain = remain.subtract(v)) {
//            ++i;
//            T item = iterator.next();
//            v = ((BigDecimal)numberList.get(i)).divide(total, scale, RoundingMode.DOWN);
//            if (iterator.hasNext()) {
//                setMethod.accept(item, v);
//            } else {
//                setMethod.accept(item, remain);
//            }
//        }
//
//        return total;
//    }
//
//    public static String formatToString(Date date, String pattern) {
//        String formatDate;
//        if (StringUtils.isNotBlank(pattern)) {
//            formatDate = DateFormatUtils.format(date, pattern);
//        } else {
//            formatDate = DateFormatUtils.format(date, "yyyy-MM-dd");
//        }
//
//        return formatDate;
//    }
//
//    public static Map<String, Object> sortMapByKeyLength(Map<String, Object> map) {
//        if (map != null && !map.isEmpty()) {
//            Map<String, Object> sortMap = new TreeMap((s1, s2) -> {
//                if (s1.length() > s2.length()) {
//                    return -1;
//                } else {
//                    return s1.length() < s2.length() ? 1 : s1.compareTo(s2);
//                }
//            });
//            sortMap.putAll(map);
//            return sortMap;
//        } else {
//            return null;
//        }
//    }
//
//    public static List<String> sortListByLength(List<String> list) {
//        list.sort((s1, s2) -> {
//            if (s1.length() > s2.length()) {
//                return -1;
//            } else {
//                return s1.length() < s2.length() ? 1 : s1.compareTo(s2);
//            }
//        });
//        return list;
//    }
//
//    public static Map<String, String> sortStringMapByKeyLength(Map<String, String> map) {
//        if (map != null && !map.isEmpty()) {
//            Map<String, String> sortMap = new TreeMap((s1, s2) -> {
//                if (s1.length() > s2.length()) {
//                    return -1;
//                } else {
//                    return s1.length() < s2.length() ? 1 : s1.compareTo(s2);
//                }
//            });
//            sortMap.putAll(map);
//            return sortMap;
//        } else {
//            return null;
//        }
//    }
//
//    public static String getStackTraceInfo(Exception e) {
//        StringWriter sw = null;
//        PrintWriter pw = null;
//
//        String var3;
//        try {
//            sw = new StringWriter();
//            pw = new PrintWriter(sw);
//            e.printStackTrace(pw);
//            pw.flush();
//            sw.flush();
//            var3 = sw.toString();
//        } catch (Exception var12) {
//            var12.printStackTrace();
//            throw new RuntimeException(var12);
//        } finally {
//            if (sw != null) {
//                try {
//                    sw.close();
//                } catch (IOException var11) {
//                    var11.printStackTrace();
//                }
//            }
//
//            if (pw != null) {
//                pw.close();
//            }
//
//        }
//
//        return var3;
//    }
//
//    static {
//        SimpleModule longSimpleModule = new SimpleModule();
//        longSimpleModule.addSerializer(Long.class, ToStringSerializer.instance);
//        longSimpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
//        objectMapper = new ObjectMapper();
//        objectMapper.registerModule(new JodaModule());
//        objectMapper.registerModule(JsonWapperSerializer.MODEL);
//        objectMapper.registerModule(longSimpleModule);
//        SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        objectMapper.setDateFormat(smt);
//        objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));
//        objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
//        objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
//        objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
//            public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
//                String fieldName = gen.getOutputContext().getCurrentName();
//
//                try {
//                    Field field = gen.getCurrentValue().getClass().getDeclaredField(fieldName);
//                    if (Objects.equals(field.getType(), String.class)) {
//                        gen.writeString("");
//                        return;
//                    }
//
//                    if (Objects.equals(field.getType(), List.class) || Objects.equals(field.getType(), Set.class)) {
//                        gen.writeStartArray();
//                        gen.writeEndArray();
//                        return;
//                    }
//
//                    if (Objects.equals(field.getType(), Map.class)) {
//                        gen.writeStartObject();
//                        gen.writeEndObject();
//                        return;
//                    }
//                } catch (NoSuchFieldException var6) {
//                }
//
//                gen.writeNull();
//            }
//        });
//        objectMapper.configure(MapperFeature.PROPAGATE_TRANSIENT_MARKER, true);
//        objectMapper.writerWithDefaultPrettyPrinter();
//        objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
//        objectYamlMapper = new ObjectMapper(new YAMLFactory());
//        objectYamlMapper.registerModule(new JodaModule());
//        objectYamlMapper.registerModule(JsonWapperSerializer.MODEL);
//        objectYamlMapper.registerModule(longSimpleModule);
//        objectYamlMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
//        objectYamlMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
//        objectYamlMapper.configure(MapperFeature.PROPAGATE_TRANSIENT_MARKER, true);
//        objectYamlMapper.writerWithDefaultPrettyPrinter();
//        objectMapperWithType = new ObjectMapper();
//        objectMapperWithType.setVisibility(PropertyAccessor.ALL, Visibility.ANY);
//        objectMapperWithType.enableDefaultTyping(DefaultTyping.NON_FINAL);
//        objectMapperWithType.registerModule(new JodaModule());
//        objectMapperWithType.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
//        objectMapperWithType.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
//        DIG_ARRAY = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
//    }
//
//    public static class Vo {
//        private BigDecimal price;
//        private BigDecimal scale;
//        private BigDecimal rebate;
//
//        public Vo() {
//        }
//
//        public BigDecimal getPrice() {
//            return this.price;
//        }
//
//        public BigDecimal getScale() {
//            return this.scale;
//        }
//
//        public BigDecimal getRebate() {
//            return this.rebate;
//        }
//
//        public void setPrice(BigDecimal price) {
//            this.price = price;
//        }
//
//        public void setScale(BigDecimal scale) {
//            this.scale = scale;
//        }
//
//        public void setRebate(BigDecimal rebate) {
//            this.rebate = rebate;
//        }
//
//        public boolean equals(Object o) {
//            if (o == this) {
//                return true;
//            } else if (!(o instanceof YvanUtil.Vo)) {
//                return false;
//            } else {
//                YvanUtil.Vo other = (YvanUtil.Vo)o;
//                if (!other.canEqual(this)) {
//                    return false;
//                } else {
//                    label47: {
//                        Object this$price = this.getPrice();
//                        Object other$price = other.getPrice();
//                        if (this$price == null) {
//                            if (other$price == null) {
//                                break label47;
//                            }
//                        } else if (this$price.equals(other$price)) {
//                            break label47;
//                        }
//
//                        return false;
//                    }
//
//                    Object this$scale = this.getScale();
//                    Object other$scale = other.getScale();
//                    if (this$scale == null) {
//                        if (other$scale != null) {
//                            return false;
//                        }
//                    } else if (!this$scale.equals(other$scale)) {
//                        return false;
//                    }
//
//                    Object this$rebate = this.getRebate();
//                    Object other$rebate = other.getRebate();
//                    if (this$rebate == null) {
//                        if (other$rebate != null) {
//                            return false;
//                        }
//                    } else if (!this$rebate.equals(other$rebate)) {
//                        return false;
//                    }
//
//                    return true;
//                }
//            }
//        }
//
//        protected boolean canEqual(Object other) {
//            return other instanceof YvanUtil.Vo;
//        }
//
//        public int hashCode() {
//            int PRIME = true;
//            int result = 1;
//            Object $price = this.getPrice();
//            int result = result * 59 + ($price == null ? 43 : $price.hashCode());
//            Object $scale = this.getScale();
//            result = result * 59 + ($scale == null ? 43 : $scale.hashCode());
//            Object $rebate = this.getRebate();
//            result = result * 59 + ($rebate == null ? 43 : $rebate.hashCode());
//            return result;
//        }
//
//        public String toString() {
//            BigDecimal var10000 = this.getPrice();
//            return "YvanUtil.Vo(price=" + var10000 + ", scale=" + this.getScale() + ", rebate=" + this.getRebate() + ")";
//        }
//    }
//}
